Test Code Duplication ^^^^^ **Definition:** * This test smell normally identifies classes that contain test methods with repeated test code steps. **Also Known As:** * Second Class Citizen **Code Example:** .. code-block:: python class TestFlight(unittest.TestCase): def test_mileage_init(self): airLine = '2569' mileage = 1000 flight = Flight(airLine,mileage) self.assertEqual(flight.mileage,1000) def test_fuel_is_full(self): airLine = '2569' mileage = 1000 flight = Flight(airLine,mileage) self.assertTrue(flight.fullFuel) def test_is_valid_air_line_code(self): airLine = '2569' mileage = 1000 flight = Flight(airLine,mileage) self.assertTrue(flight.isValidAirLineCode()) if __name__ == '__main__': unittest.main(argv=['first-arg-is-ignored'], exit=False) **References:** .. admonition:: Quality attributes * :octicon:`file-code;1em` - Code Example * :octicon:`comment-discussion;1em` - Cause and Effect * :octicon:`graph;1em` - Frequency * :octicon:`sync;1em` - Refactoring * `A survey on test practitioners' awareness of test smells `_ * `An empirical analysis of the distribution of unit test smells and their impact on software maintenance `_ :octicon:`graph;1em` * `An exploratory study of the relationship between software test smells and fault-proneness `_ :octicon:`comment-discussion;1em` :octicon:`graph;1em` * `Are test smells really harmful? An empirical study `_ :octicon:`comment-discussion;1em` :octicon:`graph;1em` :octicon:`sync;1em` * `Automatic generation of smell-free unit tests `_ :octicon:`comment-discussion;1em` * `Categorising Test Smells `_ :octicon:`graph;1em` * `Did You Remember To Test Your Tokens? `_ :octicon:`comment-discussion;1em` * `Enhancing developers’ awareness on test suites’ quality with test smell summaries `_ * `How are test smells treated in the wild? A tale of two empirical studies `_ :octicon:`graph;1em` * `Inspecting Automated Test Code: A Preliminary Study `_ :octicon:`graph;1em` * `LCCSS: A Similarity Metric for Identifying Similar Test Code `_ :octicon:`file-code;1em` :octicon:`comment-discussion;1em` * `On the diffusion of test smells in automatically generated test code: an empirical study `_ * `On the interplay between software testing and evolution and its effect on program comprehension `_ :octicon:`comment-discussion;1em` * `Refactoring Test Code `_ :octicon:`comment-discussion;1em` :octicon:`sync;1em` * `Refactoring Test Smells With JUnit 5: Why Should Developers Keep Up-to-Date? `_ :octicon:`file-code;1em` :octicon:`comment-discussion;1em` :octicon:`graph;1em` :octicon:`sync;1em` * `Refactoring Test Smells: A Perspective from Open-Source Developers `_ :octicon:`file-code;1em` :octicon:`sync;1em` * `Test Artifacts — The Practical Testing Book `_ :octicon:`file-code;1em` :octicon:`sync;1em` * `Test Smell Detection Tools: A Systematic Mapping Study `_ * `Test code quality and its relation to issue handling performance `_ * `TestAXE: Automatically Refactoring Test Smells Using JUnit 5 Features `_ :octicon:`graph;1em` :octicon:`sync;1em` * `xUnit test patterns: Refactoring test code `_ :octicon:`file-code;1em` :octicon:`comment-discussion;1em` :octicon:`sync;1em`